I met the following panic message in mcheck_mca_logout().
MSR_IA32_MCi_ADDR might take the values other than the machine
address. FATAL PAGE FAULT occured when the non-existent address is
passed to maddr_get_owner().
Signed-off-by: Kazuhiro Suzuki <kaz@jp.fujitsu.com>
if (status & MCi_STATUS_ADDRV) {
mca_rdmsrl(MSR_IA32_MC0_ADDR + 4 * i, addr);
- d = maddr_get_owner(addr);
- if (d != NULL && (who == MCA_POLLER ||
- who == MCA_CMCI_HANDLER))
- mcb.mc_domid = d->domain_id;
+ if (mfn_valid(paddr_to_pfn(addr))) {
+ d = maddr_get_owner(addr);
+ if (d != NULL && (who == MCA_POLLER ||
+ who == MCA_CMCI_HANDLER))
+ mcb.mc_domid = d->domain_id;
+ }
}
if (status & MCi_STATUS_MISCV)